package com.lizicloud.infrastructure.common.utils;

import java.util.regex.Pattern;

/**
 * 字符串工具类
 */
public class StringUtils {
    
    /**
     * 检查字符串是否为空
     */
    public static boolean isEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }
    
    /**
     * 检查字符串是否不为空
     */
    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }
    
    /**
     * 去除字符串前后空格
     */
    public static String trim(String str) {
        return str == null ? null : str.trim();
    }
    
    /**
     * 检查字符串是否为数字
     */
    public static boolean isNumeric(String str) {
        if (isEmpty(str)) {
            return false;
        }
        return str.matches("\\d+");
    }
    
    /**
     * 检查字符串是否为邮箱格式
     */
    public static boolean isEmail(String str) {
        if (isEmpty(str)) {
            return false;
        }
        String emailRegex = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$";
        return Pattern.matches(emailRegex, str);
    }
    
    /**
     * 检查字符串是否为手机号格式
     */
    public static boolean isMobile(String str) {
        if (isEmpty(str)) {
            return false;
        }
        String mobileRegex = "^1[3-9]\\d{9}$";
        return Pattern.matches(mobileRegex, str);
    }
    
    /**
     * 安全截取字符串
     */
    public static String substring(String str, int start, int end) {
        if (str == null) {
            return null;
        }
        if (start < 0) {
            start = 0;
        }
        if (end > str.length()) {
            end = str.length();
        }
        if (start >= end) {
            return "";
        }
        return str.substring(start, end);
    }
    
    /**
     * 字符串模糊匹配
     */
    public static boolean containsIgnoreCase(String str, String searchStr) {
        if (str == null || searchStr == null) {
            return false;
        }
        return str.toLowerCase().contains(searchStr.toLowerCase());
    }
    
    private StringUtils() {
        // 私有构造函数，防止实例化
    }
}